$().ready( function()
{
	/* Variables globales */
	var numPref = 0 ;
	
	/* Insertion de la première div préférentielle */
	insert_divPref() ;
	
	/* Cacher tous les champs de condition tant que "NON" */
	$('.div_2').hide() ;
	
	/* Décacher le champs de condition si "OUI", cacher si "NON" */
	$(document).on('click', '.condition', function()
	{
		var id = $(this).attr('id') ;
		var idPref = id.substring(10,16) ;
	
		if( $('#condition_'+idPref+'_2').is(':checked') )
		{
			$('#div_condition_'+idPref).slideDown() ;
		}
		else
		{
			$('#div_condition_'+idPref).slideUp() ;
		}
	});
	
	/* Ajouter une préférence */
	$('#add_preference').on('click', insert_divPref );
	
	/* Supprimer une préférence */
	$(document).on('click', '.img_close', function()
	{
		if( numPref > 1 )
		{
			var imgId = $(this).attr('id') ;
			var id = imgId.substring(7,13) ;
			$('#div_'+id).slideUp('slow', function(){ $(this).remove() ; } ) ;
			
			numPref = numPref - 1 ;
		}
		else
		{
			alert('Suppression impossible (seule préférence disponible).') ;
		}
		
	});
	
	/* Réécriture des select pour éviter de préférer une préférence à elle même */
	$(document).on('change', '.mostPreferred', function()
	{
		var idSelect = $(this).attr('id') ;
		var id = idSelect.substring(14,20) ;
		
		var option_pref1 = $('#mostPreferred_'+id).val() ;
		var option_pref2 = $('#lessPreferred_'+id).val() ;

		delete_all_in_select('#lessPreferred_'+id) ;
		create_select('#lessPreferred_'+id) ;
		
		if( option_pref1 !== option_pref2 )
		{
			$('#lessPreferred_'+id+' option[value="'+$('#mostPreferred_'+id).val()+'"]').remove() ;
			$('#lessPreferred_'+id+' option[value="'+option_pref2+'"]').attr('selected', 'selected') ;
		}
		else
		{
			$('#lessPreferred_'+id+' option[value="'+$('#mostPreferred_'+id).val()+'"]').remove() ;
		}
	});
	
	$(document).on('change', '.mostPreferred', function()
	{
		var idSelect = $(this).attr('id') ;
		var id = idSelect.substring(14,20) ;
		
		var option_pref1 = $('#mostPreferred_'+id).val() ;
		var option_pref2 = $('#lessPreferred_'+id).val() ;
		var option_cond = $('#condition_'+id).val() ;
		
		delete_all_in_select('#condition_'+id) ;
		create_select('#condition_'+id) ;
		
		if( option_pref1 !== option_cond && option_pref1 !== option_cond )
		{
			$('#condition_'+id+' option[value="'+$('#mostPreferred_'+id).val()+'"]').remove() ;
			$('#condition_'+id+' option[value="'+$('#lessPreferred_'+id).val()+'"]').remove() ;
			$('#condition_'+id+' option[value="'+option_cond+'"]').attr('selected', 'selected') ;
		}
		else
		{
			$('#condition_'+id+' option[value="'+$('#mostPreferred_'+id).val()+'"]').remove() ;
			$('#condition_'+id+' option[value="'+$('#lessPreferred_'+id).val()+'"]').remove() ;
		}
	});

	$(document).on('change', '.lessPreferred', function()
	{
		var idSelect = $(this).attr('id') ;
		var id = idSelect.substring(14,20) ;
		
		delete_all_in_select('#condition_'+id) ;
		create_select('#condition_'+id) ;
		$('#condition_'+id+' option[value="'+$('#mostPreferred_'+id).val()+'"]').remove() ;
		$('#condition_'+id+' option[value="'+$('#lessPreferred_'+id).val()+'"]').remove() ;
	});

	
		/* FONCTIONS UTILES _____________________________________________________________ */
		
		/* Création d'une div préférentielle */
		function create_divPref()
		{
			var divPref = '<div id="div_pref_' + numPref + '" class="global_div">'
				+ '<p class="p_pref">Préférence</p>'
				
				+ '<img src="pics/close.png" id="delete_pref_' + numPref + '" class="img_close" /> '
				
				+ '<p class="p_semantic"> Soit la sémantique '
				+ '<select id="semantic_pref_' + numPref + '" class="semantic">'
					+ '<option value="Strong">Strong</option>'
					+ '<option value="CeterisParibus">Ceteris Paribus</option>'
					+ '<option value="Optimist">Optimiste</option>'
				+ '</select>'
				+ '</p>'
				
				+ '<div id="div_2_pref_' + numPref + '" class="div_1">'
				
				+ '<select id="mostPreferred_pref_' + numPref + '" class="mostPreferred">'
				+ '</select>'
					+ 'préféré(e) à'
				+ '<select id="lessPreferred_pref_' + numPref + '" class="lessPreferred">'
				+ '</select>'
				
				+ '<br/>'
				+ '<p class="p_condition">Ajouter une condition ?'
				+ '<input type="radio" name="condition_pref_' + numPref + '" id="condition_pref_' + numPref + '_1" class="condition" checked />'
				+ '<label for="condtion_pref_' + numPref + '" class="label_condition">Non</label>'
				+ '<input type="radio" name="condition_pref_' + numPref + '" id="condition_pref_' + numPref + '_2" class="condition" />'
				+ '<label for="condtion_pref_' + numPref + '" class="label_condition">Oui</label>'
				+ '</p>'
				+ '<div id="div_condition_pref_' + numPref + '" class="div_2">'
				+ 'Seulement si'
				+ '<select id="condition_pref_' + numPref + '" class="condition">'
				+ '</select>'
				+ '</div>'
				+ '</div>'
				+ '</div>' ;
			
				
				
			return divPref ;
		}
		
		/* Insertion d'une div préférentielle */
		function insert_divPref()
		{
			increment_numPref() ;

			var divPref = create_divPref() ;

			/* Insertion de la div à la suite des autres */
			$('#for_insert_div').append(divPref) ;
			
			create_select('#mostPreferred_pref_'+numPref) ;
			create_select('#lessPreferred_pref_'+numPref) ;
			create_select('#condition_pref_'+numPref) ;
			
			$('#div_pref_'+numPref).hide() ;
			$('#div_pref_'+numPref).slideDown() ;
			$('#div_condition_pref_'+numPref).hide() ;
		}
		
		/* Incrémente la variable globale numPref */
		function increment_numPref()
		{
			numPref += 1 ;
		}
		
		/* Création d'un select toutes possibilités */
		function create_select( idSelect )
		{	
			$.ajax({
			type : "GET",
			url : "http://localhost/preferences/options_select.xml",
			dataType : "xml",
			success : function(xml) 
					{ 
						// Récupération des valeurs et des textes de chaque option pour créer le select
						$(xml).find('option').each( function()
						{
							var value = $(this).attr('value') ;
							var text = $(this).attr('text') ;
							
							$(idSelect).append( new Option(text, value) )
						});
			
						/* On retire les options déjà selectionnées par d'autres select */
						$('#lessPreferred_pref_'+numPref+' option[value="'+$('#mostPreferred_pref_'+numPref).val()+'"]').remove() ;
						$('#condition_pref_'+numPref+' option[value="'+$('#mostPreferred_pref_'+numPref).val()+'"]').remove() ;
						$('#condition_pref_'+numPref+' option[value="'+$('#lessPreferred_pref_'+numPref).val()+'"]').remove() ;
					}
			});
		}
		
		/* Suppression de toutes les options d'un select */
		function delete_all_in_select( idSelect )
		{
			$(idSelect).find('option').remove().end() ;
		}

		
		/* FIN FONCTIONS _________________________________________________________________ */
});